-
Notifications
You must be signed in to change notification settings - Fork 1.1k
/
Copy pathFirstSetupWindowController.swift
111 lines (93 loc) · 3.71 KB
/
FirstSetupWindowController.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
//
// FirstSetupWindowController.swift
// Aerial
//
// Created by Guillaume Louel on 29/07/2020.
// Copyright © 2020 Guillaume Louel. All rights reserved.
//
import Cocoa
enum Actions {
case welcome, videoFormat, cache
}
class FirstSetupWindowController: NSWindowController, NSWindowDelegate {
var welcomeViewItem: NSSplitViewItem?
var videoFormatViewItem: NSSplitViewItem?
var cacheSetupViewItem: NSSplitViewItem?
var timeViewItem: NSSplitViewItem?
var recapViewItem: NSSplitViewItem?
var nextViewItem: NSSplitViewItem?
lazy var splitVC = NSSplitViewController()
var nextVC: NextViewController = {
let bundle = Bundle(for: PanelWindowController.self)
return NextViewController(nibName: .init("NextViewController"), bundle: bundle)
}()
var currentStep = 0
override func windowDidLoad() {
super.windowDidLoad()
splitVC.splitView.isVertical = false
if splitVC.splitViewItems.count == 2 {
splitVC.removeChild(at: 0)
splitVC.removeChild(at: 0)
}
// We always need to specify a bundle manually, auto loading from bundle
// does not work for screen savers when compiled as plugins
let bundle = Bundle(for: PanelWindowController.self)
let welcomeVC = WelcomeViewController(nibName: .init("WelcomeViewController"), bundle: bundle)
let videoVC = VideoFormatViewController(nibName: .init("VideoFormatViewController"), bundle: bundle)
let cacheVC = CacheSetupViewController(nibName: .init("CacheSetupViewController"), bundle: bundle)
let timeVC = TimeSetupViewController(nibName: .init("TimeSetupViewController"), bundle: bundle)
let recapVC = RecapViewController(nibName: .init("RecapViewController"), bundle: bundle)
//let nextVC = NextViewController(nibName: .init("NextViewController"), bundle: bundle)
nextVC.windowController = self
welcomeViewItem = NSSplitViewItem(viewController: welcomeVC)
videoFormatViewItem = NSSplitViewItem(viewController: videoVC)
cacheSetupViewItem = NSSplitViewItem(viewController: cacheVC)
timeViewItem = NSSplitViewItem(viewController: timeVC)
recapViewItem = NSSplitViewItem(viewController: recapVC)
nextViewItem = NSSplitViewItem(viewController: nextVC)
splitVC.addSplitViewItem(welcomeViewItem!)
splitVC.addSplitViewItem(nextViewItem!)
window?.contentViewController = splitVC
}
func windowWillClose(_ notification: Notification) {
print("cloooose")
PrefsAdvanced.firstTimeSetup = true
}
func nextAction() {
currentStep += 1
redrawVC()
}
func previousAction() {
currentStep -= 1
redrawVC()
}
func redrawVC() {
splitVC.removeChild(at: 1)
splitVC.removeChild(at: 0)
switch currentStep {
case 0:
splitVC.addSplitViewItem(welcomeViewItem!)
splitVC.addSplitViewItem(nextViewItem!)
nextVC.setNoPrev()
case 1:
splitVC.addSplitViewItem(videoFormatViewItem!)
splitVC.addSplitViewItem(nextViewItem!)
nextVC.setPrevNext()
case 2:
splitVC.addSplitViewItem(cacheSetupViewItem!)
splitVC.addSplitViewItem(nextViewItem!)
nextVC.setPrevNext()
case 3:
splitVC.addSplitViewItem(timeViewItem!)
splitVC.addSplitViewItem(nextViewItem!)
nextVC.setPrevNext()
case 4:
splitVC.addSplitViewItem(recapViewItem!)
splitVC.addSplitViewItem(nextViewItem!)
nextVC.setClose()
default:
window?.close()
PrefsAdvanced.firstTimeSetup = true
}
}
}